package com.engine.salary.service;

import com.engine.salary.entity.salaryBill.dto.SalaryBillSendDTO;
import com.engine.salary.entity.salaryBill.param.EkSalaryBillDetailQueryParam;
import com.engine.salary.entity.salaryBill.param.SalaryExportPdfParam;
import com.engine.salary.entity.salaryBill.param.SalarySendGrantParam;
import com.engine.salary.entity.salaryBill.po.SalarySendPO;
import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO;

import java.util.List;
import java.util.Map;

/**
 * 工资单
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
public interface SalaryBillService {

    /**
     * 工资单发放
     *
     * @param queryParam
     */
    Map<String, Object> grant(SalarySendGrantParam queryParam);

    Map<String, Object> reGenPdf(SalarySendGrantParam queryParam);



    /**
     * 获取内容
     * @param sendId
     * @param ids
     * @return
     */
    List<Map<String, Object>> getSendInfoList(Long sendId, List<Long> ids);

    /**
     * 确认工资单
     * @param salaryInfoId
     */
    void confirmSalaryBill(Long salaryInfoId);

    /**
     * 工资单反馈
     * @param salaryInfoId
     */
    void feedBackSalaryBill(Long salaryInfoId);


    String exportPdf(SalaryExportPdfParam param);

    String genPdfBeforeExport(SalaryExportPdfParam salaryExportPdfParam);

    /**
     * 构建发放参数
     * @param salarySend
     * @param salaryTemplate
     * @return
     */
    SalaryBillSendDTO buildSendParams(SalarySendPO salarySend, SalaryTemplatePO salaryTemplate);

    List<Map<String, Object>> listDetailSalaryBill(EkSalaryBillDetailQueryParam param);

    Map<String, Object> listDelistSalaryBillJjfptailSalaryBill(EkSalaryBillDetailQueryParam param);

    Map<String, Object>  listSalaryBillLwf(EkSalaryBillDetailQueryParam param);

    /**
     * 工资单撤回
     *
     * @param queryParam
     * @param isRange
     * @param rangeIds
     * @param currentEmployeeId
     * @param currentTenantKey
     */
//    void withdraw(SalarySendWithdrawParam queryParam, boolean isRange, List<Long> rangeIds);

    /**
     * 我的工资单
     *
     * @param salaryInfoId
     * @param currentEmployeeId
     * @param currentTenantKey
     * @return
     */
//    Map<String, Object> mySalaryBill(Long salaryInfoId);

    /**
     * 我的工资单列表详情
     *
     * @param page
     * @param queryParam
     * @param tenantKey
     * @return
     */
//    Page<SalaryMySalaryBillListDTO> mySalaryBillListPage(Page<SalaryMySalaryBillListDTO> page, SalaryBillQueryParam queryParam, String tenantKey);
}
